大学のレポートのグラフを matplotlib で描く
1年間 matplotlib を使ってレポートを提出してきた unyacat.iconうにゃです.
この記事では大学指定のスタイルのグラフを描画する方法を紹介する記事です.合格しているので信頼はあると思います.
matplotlib とは
Python のグラフ描画ライブラリです
無料です.
どうして matplotlib を利用するの?
メリット
100% スクリプトで動く.Excelみたいに(?)GUIでイライラすることがない.
一度グラフの設定を構築すればその部分のコピペだけで以後設定不要.
Pythonを使ってデータ操作が可能
環境に依存しない
Python/matplotlib/numpyがついでに勉強できてなんと無料
デメリット
ぐぐり力が試される
2軸グラフとか近似曲線を描くのが癖がある
必要なもの 及び 環境
CSV形式のデータ
環境構築されたパソコン(私のは多分古いが一応下に...)
code:Python
>> sys.version
code:matplotlib
>> import matplotlib
>> matplotlib.__version__
'3.1.2'
code:pandas
>> import pandas as pd
>> pd.__version__
'1.0.3'
code:numpy
>> import numpy as np
>> np.__version__
'1.18.1'
実際にやってみる
必要なことはコメントで書いています.
code:Python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# データを読み込む
df = pd.read_csv('物質の電気伝導 - シート1.csv')
x = list(map(float, df"K".values)) y = list(map(float, df"ρ".values)) # 基本このあたりをいじるだけでいい
## 軸ラベル(TeX の記法が使えます)
x_label = "温度 $(K)$"
y_label = "電気抵抗率 $(\\rho)$"
## 軸の上限
x_lim = (0, 300) # 左が 0,右が 300
y_lim = (0, 0.0005) # 下が 0, 上が 0.0005
# 目盛りの打つ場所を操作する
# 小数点で目盛りを打ちたいときはリスト内包表記で割り算をしてやるときれいに実装できる
# グラフ設定(変更がいらないところ)
plt.gca().yaxis.set_tick_params(which='both', direction='in', bottom=True, top=True, left=True, right=True)
plt.gca().xaxis.set_tick_params(which='both', direction='in', bottom=True, top=True, left=True, right=True)
plt.xlabel(x_label)
plt.ylabel(y_label)
plt.ylim(y_lim)
plt.xlim(x_lim)
# plt.xticks(x_ticks)
# plt.yticks(y_ticks)
# グラフに点を打つ
plt.scatter(x, y, marker="o", color="black")
# 指数表記にする(あんまり使わないけど一応)
plt.gca().ticklabel_format(style="sci", scilimits=(0,0), axis="y")
# 比例しているように見えるので(いつもの)最小二乗法を適用.y = ax + b
a, b = np.polyfit(x, y, 1)
# 最小二乗法の線を引く
## 点追加(直線をグラフの端から端まで引きたいので適当な点を追加して線を伸ばす)
## 最小二乗法の線を引くための下準備
y2 = a * np.array(x) + b
## 線を引く
plt.plot(x, y2, color='black')
## 直線の式をグラフに書く
plt.text(x3, y-10, "$\\rho$ = 1.92 $\\times 10^{-6}$ K - 9.60 $10^{-5}$") # 保存する
plt.savefig('plt.png')
plt.show()
できた画像はこれ
https://gyazo.com/b9c876ffcb195eac4acf8fc96b995926
決められた要件
目盛りは内向き.全方向から書く.はみ出さない.
小数点以下余計な0を書かない (0.50 とはならない)
軸説明の向き,場所.
が守られているはずです.